{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3dfbf4e2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on class dict in module builtins:\n",
      "\n",
      "class dict(object)\n",
      " |  dict() -> new empty dictionary\n",
      " |  dict(mapping) -> new dictionary initialized from a mapping object's\n",
      " |      (key, value) pairs\n",
      " |  dict(iterable) -> new dictionary initialized as if via:\n",
      " |      d = {}\n",
      " |      for k, v in iterable:\n",
      " |          d[k] = v\n",
      " |  dict(**kwargs) -> new dictionary initialized with the name=value pairs\n",
      " |      in the keyword argument list.  For example:  dict(one=1, two=2)\n",
      " |  \n",
      " |  Built-in subclasses:\n",
      " |      StgDict\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __contains__(self, key, /)\n",
      " |      True if the dictionary has the specified key, else False.\n",
      " |  \n",
      " |  __delitem__(self, key, /)\n",
      " |      Delete self[key].\n",
      " |  \n",
      " |  __eq__(self, value, /)\n",
      " |      Return self==value.\n",
      " |  \n",
      " |  __ge__(self, value, /)\n",
      " |      Return self>=value.\n",
      " |  \n",
      " |  __getattribute__(self, name, /)\n",
      " |      Return getattr(self, name).\n",
      " |  \n",
      " |  __getitem__(...)\n",
      " |      x.__getitem__(y) <==> x[y]\n",
      " |  \n",
      " |  __gt__(self, value, /)\n",
      " |      Return self>value.\n",
      " |  \n",
      " |  __init__(self, /, *args, **kwargs)\n",
      " |      Initialize self.  See help(type(self)) for accurate signature.\n",
      " |  \n",
      " |  __ior__(self, value, /)\n",
      " |      Return self|=value.\n",
      " |  \n",
      " |  __iter__(self, /)\n",
      " |      Implement iter(self).\n",
      " |  \n",
      " |  __le__(self, value, /)\n",
      " |      Return self<=value.\n",
      " |  \n",
      " |  __len__(self, /)\n",
      " |      Return len(self).\n",
      " |  \n",
      " |  __lt__(self, value, /)\n",
      " |      Return self<value.\n",
      " |  \n",
      " |  __ne__(self, value, /)\n",
      " |      Return self!=value.\n",
      " |  \n",
      " |  __or__(self, value, /)\n",
      " |      Return self|value.\n",
      " |  \n",
      " |  __repr__(self, /)\n",
      " |      Return repr(self).\n",
      " |  \n",
      " |  __reversed__(self, /)\n",
      " |      Return a reverse iterator over the dict keys.\n",
      " |  \n",
      " |  __ror__(self, value, /)\n",
      " |      Return value|self.\n",
      " |  \n",
      " |  __setitem__(self, key, value, /)\n",
      " |      Set self[key] to value.\n",
      " |  \n",
      " |  __sizeof__(...)\n",
      " |      D.__sizeof__() -> size of D in memory, in bytes\n",
      " |  \n",
      " |  clear(...)\n",
      " |      D.clear() -> None.  Remove all items from D.\n",
      " |  \n",
      " |  copy(...)\n",
      " |      D.copy() -> a shallow copy of D\n",
      " |  \n",
      " |  get(self, key, default=None, /)\n",
      " |      Return the value for key if key is in the dictionary, else default.\n",
      " |  \n",
      " |  items(...)\n",
      " |      D.items() -> a set-like object providing a view on D's items\n",
      " |  \n",
      " |  keys(...)\n",
      " |      D.keys() -> a set-like object providing a view on D's keys\n",
      " |  \n",
      " |  pop(...)\n",
      " |      D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n",
      " |      \n",
      " |      If key is not found, default is returned if given, otherwise KeyError is raised\n",
      " |  \n",
      " |  popitem(self, /)\n",
      " |      Remove and return a (key, value) pair as a 2-tuple.\n",
      " |      \n",
      " |      Pairs are returned in LIFO (last-in, first-out) order.\n",
      " |      Raises KeyError if the dict is empty.\n",
      " |  \n",
      " |  setdefault(self, key, default=None, /)\n",
      " |      Insert key with a value of default if key is not in the dictionary.\n",
      " |      \n",
      " |      Return the value for key if key is in the dictionary, else default.\n",
      " |  \n",
      " |  update(...)\n",
      " |      D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.\n",
      " |      If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]\n",
      " |      If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v\n",
      " |      In either case, this is followed by: for k in F:  D[k] = F[k]\n",
      " |  \n",
      " |  values(...)\n",
      " |      D.values() -> an object providing a view on D's values\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Class methods defined here:\n",
      " |  \n",
      " |  __class_getitem__(...) from builtins.type\n",
      " |      See PEP 585\n",
      " |  \n",
      " |  fromkeys(iterable, value=None, /) from builtins.type\n",
      " |      Create a new dictionary with keys from iterable and values set to value.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Static methods defined here:\n",
      " |  \n",
      " |  __new__(*args, **kwargs) from builtins.type\n",
      " |      Create and return a new object.  See help(type) for accurate signature.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data and other attributes defined here:\n",
      " |  \n",
      " |  __hash__ = None\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(dict)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "589d542b",
   "metadata": {},
   "source": [
    "| 字典方法   |说明               |备注   |\n",
    "| ----------- | ----------------        |----------- |\n",
    "| clear()   |  删除字典内所有元素  |  |\n",
    "| copy()    |  复制字典内所有元素  | |\n",
    "| fromkeys() |创建一个新字典，其中键来自iterable，值设置为value|这些 key 对应的 value 默认都是default(None)，也可额外指定一个参数作为默认的 value|\n",
    "| get()   | 返回指定键的值    |如果键不在字典中,返回默认值:None  |\n",
    "| items()     | 返回一个dict_items对象 |获取字典中的所有 key-value 对 |\n",
    "| keys()   | 返回一个dict_keys对象|获取字典中的所有 key |\n",
    "| values()   |返回一个dict_values对象 |获取字典中所有的value |\n",
    "| pop()  | 删除这个 key-value 对,并返回相应的值  |如果key不存在，返回设置指定的默认值default，默认值default没有指定则触发KeyError异常|\n",
    "| popitem()  |随机返回并删除字典中的最后一个key-value 对 |如果字典已经为空，则报出 KeyError 异常|\n",
    "| setdefault()   | 和get()方法类似，返回指定键的值 | 若key-value 对不存在，则插入key及设置的默认值default(None)|\n",
    "| update()    | 使用key-value 对来更新已有的字典     |如果被更新的字典中已包含对应的key-value 对，那么原value会被覆盖|"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7ba5290",
   "metadata": {},
   "source": [
    "## 1.clear()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e5ab06ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "44b70111",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.clear()\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ae15444",
   "metadata": {},
   "source": [
    "## 2.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6bbc9622",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "a96151db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.copy()\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "620b52ed",
   "metadata": {},
   "source": [
    "## 3.fromkeys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "057869d7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'1': None, '2': None}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict.fromkeys(\"12\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e18e418",
   "metadata": {},
   "source": [
    "* 指定默认的value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "e7ac652c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1: 'great', 2: 'great'}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict.fromkeys((1,2),\"great\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4610c10f",
   "metadata": {},
   "source": [
    "## 4.get() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "58a4566a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "b3a8780f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'23'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.get(\"age\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "31670735",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "None\n"
     ]
    }
   ],
   "source": [
    "user_dict.get(\"number\")\n",
    "print(user_dict.get(\"number\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "438339ef",
   "metadata": {},
   "source": [
    "## 5.items()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "79bf1659",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "849b3e81",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_items([('name', 'Mark'), ('region', '广州'), ('job', '产品经理'), ('age', '23'), ('salary', '13K/月')])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.items()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "672de86a",
   "metadata": {},
   "source": [
    "## 6.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "57021daa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "eb6d1270",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['name', 'region', 'job', 'age', 'salary'])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.keys()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c75fa61",
   "metadata": {},
   "source": [
    "## 7.values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "3a2108c8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "46c409c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_values(['Mark', '广州', '产品经理', '23', '13K/月'])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.values()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "297f0d77",
   "metadata": {},
   "source": [
    "## 8.pop()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d9c7bc38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "44f9eb53",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'job': '产品经理', 'age': '23', 'salary': '13K/月'}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.pop(\"region\")\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4b6a009a",
   "metadata": {},
   "source": [
    "* 未设置默认值，触发异常"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "6ae84cba",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "'number'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "Input \u001b[1;32mIn [21]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43muser_dict\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpop\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mnumber\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "\u001b[1;31mKeyError\u001b[0m: 'number'"
     ]
    }
   ],
   "source": [
    "user_dict.pop(\"number\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d3ad8db",
   "metadata": {},
   "source": [
    "* 设置默认值来避免异常"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "94446e61",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'不存在'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "\n",
    "user_dict.pop(\"number\",\"不存在\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1eef170d",
   "metadata": {},
   "source": [
    "## 9.popitem()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "0a584dc8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('salary', '13K/月')"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "\n",
    "user_dict.popitem()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "63783782",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark', 'region': '广州', 'job': '产品经理', 'age': '23'}"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict   # 删除了最后一个key-value 对"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c2e7b85",
   "metadata": {},
   "source": [
    "## 10.setdefault()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "f2248451",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'产品经理'"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "\n",
    "user_dict.setdefault(\"job\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "8e534df2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "None\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark',\n",
       " 'region': '广州',\n",
       " 'job': '产品经理',\n",
       " 'age': '23',\n",
       " 'salary': '13K/月',\n",
       " 'country': None}"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict.setdefault(\"country\")\n",
    "print(user_dict.setdefault(\"country\"))\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5196a0ed",
   "metadata": {},
   "source": [
    "## 11.update()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "01c02767",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark',\n",
       " 'region': '广州',\n",
       " 'job': '产品经理',\n",
       " 'age': '23',\n",
       " 'salary': '13K/月',\n",
       " 'gender': 'male'}"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "\n",
    "user_dict.update({\"gender\":\"male\"})\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "a017d099",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'Mark',\n",
       " 'region': '广州',\n",
       " 'job': '产品经理',\n",
       " 'age': '23',\n",
       " 'salary': '9.5K/月'}"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "user_dict = {'name':\"Mark\",\n",
    "             'region':\"广州\",\n",
    "             'job':\"产品经理\",\n",
    "             'age':\"23\",\n",
    "             'salary':\"13K/月\"}\n",
    "\n",
    "user_dict.update({'salary':\"9.5K/月\"})\n",
    "user_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6ba21e6f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "853f3fde",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "34b81286",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
